package picol.model.asa.expr;

/**
 * Classe de gestion de l'expression plus
 * @author Aurélien Marcel - Julien Sanderson
 */
public class ASAExprPlus extends ASAExpr {

    private ASAExpr expr1;
    private ASAExpr expr2;

    public ASAExprPlus(ASAExpr _expr1, ASAExpr _expr2) {
        this.expr1 = _expr1;
        this.expr2 = _expr2;
    }

    @Override
    public ASAExpr getExpr1() {
        return expr1;
    }

    @Override
    public ASAExpr getExpr2() {
        return expr2;
    }

    public String getLabelExplorateur() {
        return "PLUS";
    }

    @Override
    public int evalue() {
        return expr1.evalue() + expr2.evalue();
    }

    @Override
    public ASAExpr simplifie() {

        ASAExpr se1 = expr1.simplifie();
        ASAExpr se2 = expr2.simplifie();

        if (se1 instanceof ASAExprEntier && se2 instanceof ASAExprEntier) {
            return new ASAExprEntier(se1.evalue() + se2.evalue());
        }

        if (se2.getValeur() == 0) {
            return se1;
        }

        if (se1.getValeur() == 0) {
            return se2;
        }

        return new ASAExprPlus(se1, se2);
    }
}
